package com.ice.body.business.service;
import com.ice.base.model.SysLoginModel;
import com.ice.base.result.AjaxResult;
import com.ice.body.business.vo.ReagentStockVo;
import com.ice.body.dashboard.model.TotalStockVo;
import com.ice.body.log.model.LogDestroy;
import com.ice.body.business.model.ReagentStock;
import com.ice.base.service.BaseService;
import com.ice.body.rpc.dto.ReagentStockDto;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with GuoYanBin.
 * Description:业务接口-试剂库存 service
 * Date: 2022-10-22
 * Time: 10:15
 */
public interface ReagentStockService extends BaseService<ReagentStock>{


    AjaxResult batchUpdateImpurity(ReagentStock model);

    /**
     * 出入归还销毁
     * @param model
     * @return
     */
    AjaxResult cabinetRecord(ReagentStockDto model);

    /**
     * 打印标签
     * @param model
     */
    void printRFID(ReagentStock model) throws  Exception;
    /**
     * 补打印
     */
    void printEpc(String epcCode) throws  Exception;


    ArrayList<ReagentStockVo> selectTotal();

    ReagentStock getByEpcCode(String epcCode);

    String getStateByEpcCode(String epcCode);

    Integer checkReagentInWarehouse(ReagentStock model);

    void insertModel(ReagentStock model);

    //出门结算 批量修改状态
    Integer batchUpdate(SysLoginModel user,List<String> list, String state);

    Integer destroy(LogDestroy model);
    /**
     * 手动入库
     */
    boolean enterWarehouse(ReagentStock model);

    /**
     * 手动出库
     */
    boolean outWarehouse(ReagentStock model);

    /**
     * 结算入库
     */
    boolean batchInStock(SysLoginModel user, List<ReagentStock> list , String warehouseId);
    //结算出库
    Integer batchOutStock(List<ReagentStock> stockList, String verifyUser);
    //结算归还
    Integer batchBackStock(List<ReagentStock> stockList, String verifyUser);


    void getExpireReagent();

    List<ReagentStock> getExpireWarning();

    void deleteExpire(Integer id);



    //数据看板 - 按照单位获取危化品统计数据
    ArrayList<TotalStockVo>  getTotalStock();
}
